這是《30 天打造 AI 後端:從 LLM、RAG 到 AI Agent》的第 19 篇。
完全沒看過前面也讀得下去,這篇不需要任何背景。
我做了一個東西:你用白話問公司規章,它去翻規章,然後用人話回答你。
「加班三小時怎麼算錢?」「這個月遲到三次會被記過嗎?」它翻完那本規章
(我虛構的,59 條),給你一段回答。
做出來馬上碰到一個煩人的問題:它講的到底對不對?
我一開始自己一題一題讀,讀到受不了——手上累積了 40 個回答,
每個都要對照規章看一遍。所以我想讓程式幫我改。改法有兩種。
第一種:打勾表。 每題我先列好「一個好答案應該講到哪幾件事」,
然後一件一件問:有講到嗎?每件事只有三種結果——有講到/沒提到/講反了。
我還訂了一條規矩:只要有任何一件被判「講反了」,整題就算錯。
因為「少講一句」頂多是不完整,「講反了」是會害到人的。
第二種:請一位 AI 老師。 把題目、規章原文、答案一起交給另一個 AI,
請它看完給一個等第。就像把作文交給老師改。
兩種改法的結果,跟「我自己讀出來的結論」比對,40 個回答裡有幾個一致:
打勾表輸了。但我看得出它是怎麼壞的——40 個裡有 9 個是「我覺得答對、它判錯」,
而這 9 個全擠在兩道題上。
所以我在昨天文章的最後,公開寫下一句話當賭注:
修完還是輸給 AI 老師,打勾表這條路我就認輸。
病因一:它看到「不」就發瘋。
有一題問「到職三個月的試用期員工有沒有特休假」,正確答案是沒有,要滿六個月。
我列的是「滿三個月的員工還沒有特休假」,
AI 答「滿三個月的試用期員工沒有特休假」。
同一個意思,但程式判它「講反了」。
我當時覺得自己知道為什麼:前一天為了抓「颱風在家上班那天不需要簽到」這種答反的,
我在指令裡特地加了一句「要特別注意有沒有『不』這種字」。
寫太用力了,害它看到「不」就開槍。
病因二:它把「例外」當成唱反調。
另一題問「離職時公司東西還沒還,公司可以不發服務證明書嗎」。
規章的原則是「七個工作日內要發」,但下面寫了例外:「東西沒還的可以先不發」。
AI 答的就是那個例外,完全正確。可是我列的那件事寫的是原則,程式判「講反了」。
答案講的是規章自己寫的例外,不是在反駁原則。
但我的表只有三格,「這是例外」根本沒地方放。
兩個病因,我各寫一段說明去教它。然後做了今天最重要的一件事:
兩段說明分開試,不准一次改兩個地方。
因為一次改兩處,看到分數變好,你只知道「有用」,不知道是哪段有用,
甚至不知道其中一段是不是在扯後腿。
| 改法 | 40 個裡幾個跟我一致 |
|---|---|
| 原本的 | 28 |
| 只修「不」那個 | 25 |
| 只修「例外」那個 | 30 |
| 兩個都修 | 31 |
| AI 老師(對照) | 33 |
看第二列。我單獨修那個我最有把握的病因,分數從 28 掉到 25。
那 9 個一個都沒救回來,還額外弄壞三題。其中一題是加班費:
答案寫的內容跟我列的那件事幾乎一字不差,原本判「有講到」,
加了說明之後改判「講反了」——而我那段說明裡一個字都沒提到加班費。
它不是學會了,是被我多寫的兩百個字弄糊塗了。
「例外」那題的四個回答全部救回來了,乾淨俐落。特休假那題的五個,一個都沒有。
拆開來看才知道為什麼。那題我列了三件事,其實都在講同一條規定的三個面:
原本三件全判「講反了」。改一次說明,剩兩件。再改,剩一件。
兩段都加上去,還是剩一件——只是換成另外一件。
而我的規矩是「只要有一件講反,整題就算錯」。所以只要還有一件是黑的,整題就是黑的。
我不是在補漏水的洞,我是在推一顆氣泡。
從這一格推到那一格,氣泡還在裡面。
真正的毛病不在我給它的說明,在我自己設計的那張表。
我把一件事拆成三件去問,又規定有一件講反就整題算錯——
三次判斷的雜訊變成整題的雜訊,而且只會往「錯」那邊倒。
還有一個乍看矛盾的地方:同一份說明連跑五遍,八個回答的結果完全一樣。
它不是在亂猜,它是很穩定地判錯。穩定跟正確是兩件事。
放寬「講反了」,我最怕真的講反的答案被放過去。
要驗這件事,前面那 40 個回答幫不上忙——那是 AI 寫的,我控制不了內容。
所以我另外自己手寫了一批假答案,用來考那個改考卷的程式:
8 個問題 × 4 種寫法 = 32 份,每份我都事先知道該得什麼結果。
| 我寫的版本 | 長什麼樣 | 應該被判成 |
|---|---|---|
| 抄原文 | 整段抄規章 | 對 |
| 一句話 | 只講結論 | 對 |
| 囉嗦版 | 講對了但很長 | 對 |
| 只差一個「不」 | 跟「一句話」差一個字 | 錯 |
我怕的第四種,8 份一份都沒被放過(改前改後都全抓到)。我擔心的事沒發生。
代價出在第一種:「抄原文」原本 8 份判對 7 份,修完只剩 4 份。
因為我教它的話是「答案講的是別的事情,就算沒提到,不要算講反了」。
它用過頭了——連明明有講到的,也更容易被判成「沒提到」,
整題就從「對」降成「講得不完整」。
我只想拉高「講反了」那一格,「有講到」那一格卻跟著鬆掉。
三格是同一個 AI 在同一次回答裡選的,你沒辦法只動一格。
(順帶一提:「抄原文」就是我前兩天唯一做過的自我檢查。它當時 8 份全過,
什麼都沒查出來——因為抄原文本來就最好過。
今天它終於抓到一次,抓到的是我自己的修法。測試要留著,不是跑完就丟。)
到這裡為止,寫答案的跟改考卷的是同一個 AI(便宜的那個)。
自己改自己的考卷本來就有問題,今天來補。兩種改法都換成貴的,指令一字不改:
| 改法 | 幾個跟我一致 | 改一個回答多少錢 |
|---|---|---|
| 打勾表(便宜的) | 31 | 0.008 元 |
| 打勾表(貴的) | 31 | 0.137 元 |
| AI 老師(便宜的) | 33 | 0.005 元 |
| AI 老師(貴的) | 33 | 0.079 元 |
一分都沒變。錢花了 17 倍。
而且組成還變差:貴的那個「該扣分卻沒扣」從 4 次變 6 次。
它不是更準,是更好講話。
兩個 AI 改出來有 36/40 相同,不同的四個裡貴的對兩個、錯兩個。
唯一真的進步的是穩定度:便宜的跑五遍會有兩題改口,貴的跑三遍都沒改口。
要為「換貴模型」找理由,理由是它比較不會改口,不是比較準。
想像一場只有兩個人的作文比賽:參賽的是便宜 AI 和貴 AI,
而評審也是這兩個人——就是他們自己。每人改兩份:自己的,和對方的。
不能只看「它給自己打幾分」,因為你不知道那篇本來值幾分。
要看的是:同一份答案,另一個評審打幾分。
(每格都是同樣 8 個問題,滿分 8。)
| 判「答對」的題數 | 便宜 AI 寫的 | 貴 AI 寫的 |
|---|---|---|
| 便宜 AI 改的 | 6 | 6 |
| 貴 AI 改的 | 6 | 7 |
那可以說貴 AI 偏心嗎?不行。 還有另一個解釋:它寫的答案可能本來就比較好。
這兩個解釋我分不開,而差距只有 1 題——一格才 8 題,任何一個答案翻面就沒了。
所以是「測不出來」,不等於「沒有偏心」。
我這個規模的實驗根本沒能力回答這個問題,要問出答案得多一個數量級。
(有趣的是:那個貴 17 倍的 AI 自己寫答案時,也寫出了「那天不需要簽到」。
同一個坑,同一個「不」字。)
照我昨天公開寫下的標準:打勾表修完 31,還是輸給 AI 老師的 33。我認輸。
我不打算改成「其實各有優缺點」。驗收標準是昨天當著讀者的面寫的,
今天回頭重新定義什麼叫成功,那前面 18 天的數字就一個都不能信了。
兩種改法錯的方向不一樣:打勾表判錯 9 個,6 個是冤枉了對的答案;
AI 老師判錯 7 個,4 個是放過了錯的答案。 一個偏嚴,一個偏鬆,
而且錯在不同的答案上。
於是我把 40 個分兩堆:意見一致的 27 個、吵架的 13 個。
然後問:被判錯的躲在哪一堆?
40 個裡「至少被一種改法判錯」的有 14 個——這 14 個才是我真正得親自看的。
結果:13 個在吵架那堆,只有 1 個在意見一致那堆。
只讀它們吵架的 13 個,就碰到 14 個問題裡的 13 個。
要人讀的量從 40 降到 13,而且不是隨便抽的。
漏掉的那 1 個,是兩種改法判成一模一樣的結果,而且兩個都錯。
有共識,共識是錯的。
這就是天花板:達成共識的錯誤,任何「看哪裡意見不合」的機制都抓不到。
兩個都說對,不等於對。
(這個「13 個」是同一批 40 個回答上算出來的觀察,我沒有第二批資料驗過。
所以它還不是結論,是線索。)
1. 一次只改一個地方。 我要是一開始就兩段一起加,看到 28 變 31 就收工了,
永遠不會知道其中一半的修法是有害的。
2. 代價不一定從你防守的地方出來。 我防的是「講反的被放過」,一個沒掉;
實際掉的是「抄原文的被降級」。測試要全部重跑,不是只跑你擔心的那一項。
3. 穩定不等於正確。 同一份說明跑五遍結果完全一樣,然後穩定地判錯五題。
今天總共花 22 元,其中「換貴 AI 改考卷」那幾項就佔了 19.5 元,將近九成,
而它們買到的分數進步是 0。
這錢不算全白花——它排除了一個可能性:
問題不是模型不夠聰明,是我那張表的設計有毛病。
但我要是先跑那個只花一塊錢的分開測試,早就知道了。
便宜的實驗先跑,才知道貴的實驗要不要跑。
「怎麼知道 AI 答得對不對」這條線到今天收工。
前面 19 天有一個地方從來沒被我檢討過:
「去翻幾條規章」是我寫死的數字,而且只翻一次。
明天讓 AI 自己決定:要不要去翻、用什麼字去翻、翻回來不夠要不要再翻一次。
這就是最小的 agent——一個會自己決定下一步的迴圈,而不是一條我寫死的流程。
然後跟寫死的版本正面對撞,兩個數字並排:答對幾題、花了幾倍的錢。
我猜它會贏一點、貴很多。但我今天兩次都猜錯了東西會從哪裡壞掉,所以還是照跑。
《30 天打造 AI 後端:從 LLM、RAG 到 AI Agent》第 19 篇
day19_rag/)這系列每天都會有一個自己跑出來的實驗,而且我會把跑錯的、推翻自己的部分
一起寫進去——像今天這樣,連昨天的診斷一起推翻。
覺得有用的話,點左邊我的頭像可以追蹤,明天的會出現在你的首頁。